#include <cstdio>
#include <functional>

class A {
public:
    void B()
    {
        printf("c\n");
    }
};

void C(const int &c)
{
    printf("%p\n", &c);
}

int main()
{
    std::function<void(void)> f;

    if (f) f();

    std::bind(&A::B, new A())();

    printf("function reference\n");
    int c;
    printf("%p\n", &c);
    C(c);
    // cref, c for const
    std::bind(C, std::cref(c))();

    // bind_front for without _1, _2, ...
    // but bind_front is C++20
    return 0;
}
